<?php

/*
 * Condições do teste:
 *
 * - id_bolao=4, está associado com algum bolao.
 * 
 *
*/

require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
require_once 'Conexao.php';

class TesteAlimentarResultados extends PHPUnit_Extensions_SeleniumTestCase {

    protected $receivedCon;
    protected $result;
    protected $insercaoBD = "INSERT INTO bolao(id, id_jogo, nome, email_criador, importante)
        VALUES(4, 1, NULL, NULL, 0)";
    protected $remocaoBD = "DELETE FROM bolao
        WHERE email_criador is NULL";
    
    protected function setUp() {

        $this->receivedCon = new Conexao();
        $this->receivedCon->conect();
        echo "conexao bem sucedida.\n";

        $this->result = $this->receivedCon->query($this->insercaoBD);
        echo "Operacao no banco de dados bem sucedida.\n";
        
        $this->setBrowser("*firefox");
        $this->setBrowserUrl("http://localhost/");
    }

    protected function tearDown() {

        $this->receivedCon->query($this->remocaoBD);
        echo "Banco deletado com sucesso.\n";
        $this->receivedCon->close();
        echo "Conexao finalizada com sucesso.\n\n";

    }

    public function logonAdmin(){

        $this->open("/administrador/resultado/inserir?id_bolao=100");
        $this->type("email", "fabiofeliciano@di.ufpb.br");
        $this->type("senha", "123456");
        $this->click("submit");

    }

    public function testBolaoInexistente() {        

        $this->logonAdmin();
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Bolão Inexistente! Procure
                um bolão válido para apostar.!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testIdBolaoVazio() {
        
        $this->logonAdmin();
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Bolão Inexistente! Impossível
                inserir resultado."));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

    public function testInsercaoComSucesso() {
        
        $this->logonAdmin();
        $this->open("/administrador/resultado/inserir?id_bolao=4");
        $this->waitForPageToLoad("30000");
        $this->type("gols_time_a", "2");
        $this->type("gols_time_b", "4");
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Resultado registrado no Banco de Dados!"));
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }
  
    /*Resultado:
  		Tipo da Exceção:  	object
		Código da Exceção: 	0
		Mensagem: 	SQLSTATE[HY00General error: 1366 Incorrect integer value: 'rt' for column 'gols_time_a' at row 1*/

    public function testInsercaoDeCaracteresNaoNumericos() {
        
        $this->logonAdmin();
        $this->waitForPageToLoad("30000");
        $this->open("/administrador/resultado/inserir?id_bolao=4");
        $this->waitForPageToLoad("30000");
        $this->type("gols_time_a", "rt");
        $this->type("gols_time_b", "5t");
        $this->click("submit");

        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Um erro ocorreu durante
                o processamento desta transação:"));

        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }
    /* Resultado: Tipo da Exceção:  	object
			   Código da Exceção: 	0
			   Mensagem: 	SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'gols_time_a' at row 1*/


    public function testInsercaoComCamposEmBranco() {
        
        $this->logonAdmin();
        $this->waitForPageToLoad("30000");
        $this->open("/administrador/resultado/inserir?id_bolao=4");
        $this->waitForPageToLoad("30000");
        $this->type("gols_time_a", " ");
        $this->type("gols_time_b", " ");
        $this->click("submit");
        $this->waitForPageToLoad("30000");
        try {
            $this->verifyTextPresent($this->isTextPresent("Um erro ocorreu durante
                o processamento desta transação:"));            
        } catch (PHPUnit_Framework_AssertionFailedError $e) {
            array_push($this->verificationErrors, $e->toString());
        }
    }

}
?>